import unittest

"""
 @author adun
 @date 2020/11/1 22:11
 Python 迭代器
迭代器是一种对象，该对象包含值的可计数数字。

迭代器是可迭代的对象，这意味着您可以遍历所有值。

从技术上讲，在 Python 中，迭代器是实现迭代器协议的对象，它包含方法 __iter__() 和 __next__()。

迭代器 VS 可迭代对象（Iterable）
列表、元组、字典和集合都是可迭代的对象。它们是可迭代的容器，您可以从中获取迭代器（Iterator）。

所有这些对象都有用于获取迭代器的 iter() 方法：
"""


class MyTestCase(unittest.TestCase):
    def test_something(self):
        self.assertEqual(True, False)
    # 从元组返回一个迭代器，并打印每个值：
    def test_iter_tuple(self):
        mytuple = ("apple", "banana", "cherry")
        myit = iter(mytuple)

        print(next(myit))
        print(next(myit))
        print(next(myit))

    # 甚至连字符串都是可迭代的对象，并且可以返回迭代器：
    def test_iter_string(self):
        mystr = "banana"
        myit = iter(mystr)

        print(next(myit))
        print(next(myit))
        print(next(myit))
        print(next(myit))
        print(next(myit))
        print(next(myit))
    # ###提示：for 循环实际上创建了一个迭代器对象，并为每个循环执行 next() 方法。
    # 遍历迭代器
    # 我们也可以使用 for 循环遍历可迭代对象：
    #
    # 实例
    # 迭代元组的值：
    def test_for_tuple(self):
        mytuple = ("apple", "banana", "cherry") # 元组就是迭代器（根据python对迭代器的定义来讲）

        for x in mytuple:
            print(x)


if __name__ == '__main__':
    unittest.main()
